home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / FORMAT.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-04-26  |  1.6 KB  |  108 lines

  1. CR    EQU    0DH
  2. LF    EQU    0AH
  3. CODE    SEGMENT
  4.     ASSUME    CS:CODE,DS:CODE
  5.     ORG    100H
  6. START:    MOV    STKPTR,SP
  7.     MOV    AH,0
  8.     MOV    SI,81H
  9. DRVLP:    LODSB
  10.     CMP    AL,CR
  11.     JZ    DRVEND
  12.     CMP    AL,':'
  13.     JZ    GOTDRV
  14.     MOV    AH,AL
  15.     JMP    DRVLP
  16. DRVEND: MOV    DX,OFFSET MSG5
  17.     MOV    AH,9
  18.     INT    21H
  19.     INT    20H
  20. GOTDRV: AND    AH,5FH
  21.     CMP    AH,'A'
  22.     JB    DRVLP
  23.     CMP    AH,'C'
  24.     JNB    DRVLP
  25.     MOV    AX,CS
  26.     MOV    SS,AX
  27.     MOV    SP,OFFSET LOCAL_STACK
  28.     MOV    DS,AX
  29.     MOV    ES,AX
  30.     MOV    BX,OFFSET LOCAL_STACK+15
  31.     MOV    CL,4
  32.     SHR    BX,CL
  33.     MOV    AH,4AH
  34.     INT    21H
  35.     JNC    NOALCERR
  36.     MOV    DX,OFFSET MSG1
  37.     MOV    AH,9
  38.     INT    21H
  39.     INT    20H
  40. NOALCERR:
  41.     MOV    AX,CS
  42.     MOV    PARBLK+4,AX
  43.     MOV    PARBLK+8,AX
  44.     MOV    PARBLK+12,AX
  45.     MOV    AL,DS:80H
  46.     MOV    SI,OFFSET PREFMSG
  47.     MOV    DI,OFFSET CMDLIN
  48.     ADD    AL,10
  49.     STOSB
  50.     MOV    CX,5
  51.     REP    MOVSW
  52.     MOV    SI,80H
  53.     LODSB
  54.     INC    AL
  55.     MOV    CL,AL
  56.     SUB    CH,CH
  57.     REP    MOVSB
  58.     MOV    AX,DS:2CH
  59.     MOV    DS,AX
  60.     MOV    SI,0
  61.     MOV    DI,OFFSET COMSPEC
  62. LOOP1:    PUSH    DI
  63.     PUSH    SI
  64.     MOV    CX,4
  65.     REP    CMPSW
  66.     JZ    GOTSPEC
  67.     POP    SI
  68.     POP    DI
  69. LOOP2:    LODSB
  70.     OR    AL,AL
  71.     JNZ    LOOP2
  72.     MOV    AL,[SI]
  73.     OR    AL,AL
  74.     JNZ    LOOP1
  75.     MOV    AX,CS
  76.     MOV    DS,AX
  77.     MOV    DX,OFFSET MSG2
  78.     MOV    AH,9
  79.     INT    21H
  80.     INT    20H
  81. GOTSPEC:
  82.     POP    DI
  83.     POP    DI
  84.     MOV    DX,SI
  85.     MOV    BX,OFFSET PARBLK
  86.     MOV    AX,4B00H
  87.     INT    21H
  88.     MOV    AX,CS
  89.     MOV    SS,AX
  90.     MOV    SP,CS:STKPTR
  91.     MOV    DS,AX
  92.     MOV    ES,AX
  93.     INT    20H
  94. MSG1    DB    'Unable to release memory.$'
  95. COMSPEC DB    'COMSPEC='
  96. MSG2    DB    'COMSPEC must be set$'
  97. MSG5    DB    'Must specify drive A: or B: to format$'
  98. PARBLK    DW    0,CMDLIN,?,FCB1,?,FCB2,?
  99. CMDLIN    DB    0,CR,0,128 DUP(?)
  100. PREFMSG DB    ' /C REALFM'
  101. STKPTR    DW    ?
  102. FCB1    DB    0,11 DUP('?'),25 DUP(0)
  103. FCB2    DB    0,11 DUP(' '),25 DUP (0)
  104. ENDCODE LABEL    BYTE
  105. LOCAL_STACK    EQU    ENDCODE+2048
  106. CODE    ENDS
  107.     END    START
  108. DUP('?'),25 DU